home *** CD-ROM | disk | FTP | other *** search
/ 3D Images / 3D Images.iso / programs / amiga / catpic / catpic.mod < prev   
Text File  |  1995-01-12  |  6KB  |  278 lines

  1. MODULE CatPic5;
  2.  
  3. IMPORT Dos,
  4.        fs:FileSystem,
  5.        y:SYSTEM,
  6.        io,
  7.        NoGuru,
  8.        rq:ReqTools,
  9.        fr:FileReq,
  10.        cv:Conversions,
  11.        u:Utility,
  12.        str:Strings;
  13.  
  14. CONST
  15.  
  16.      TempImag="T:TempImage";
  17.      SourceImag="T:SourceImage";
  18.      CatImag="T:CatImage" ;
  19.      EnvName="ENV:CatPic.settings";
  20.  
  21. (*     cIw=800;
  22.      cIh=600;
  23.      nIx=5;
  24.      nIy=5;
  25. *)
  26.  
  27. TYPE st=ARRAY 250 OF CHAR;
  28.  
  29. VAR fl:fs.File;
  30.     tIw:INTEGER;
  31.     tIh:INTEGER;
  32.     pNm:INTEGER;
  33.     Operator:st;
  34.     pxA,mxA:ARRAY 51 OF INTEGER;
  35.     prA,trA:ARRAY 51 OF INTEGER;
  36.     cIw,cIh,nIx,nIy,px,py:LONGINT;
  37.     Prefs,Cont:BOOLEAN;
  38.  
  39. PROCEDURE ReadPrefs;
  40. VAR fl:fs.File;
  41.     n:INTEGER;
  42. BEGIN;
  43. Prefs:=FALSE;
  44. IF fs.Open(fl,EnvName,FALSE) THEN
  45.  IF fs.ReadString(fl,Operator) THEN END;
  46.  IF fs.Read(fl,mxA) THEN END;
  47.  IF fs.Read(fl,trA) THEN END;
  48.  IF fs.Read(fl,cIw) THEN END;
  49.  IF fs.Read(fl,cIh) THEN END;
  50.  IF fs.Read(fl,nIx) THEN END;
  51.  IF fs.Read(fl,nIy) THEN Prefs:=TRUE;END;
  52.  IF fs.Close(fl) THEN END;
  53. END;
  54. END ReadPrefs;
  55.  
  56. PROCEDURE WritePrefs;
  57. VAR fl:fs.File;
  58. BEGIN;
  59. IF fs.Open(fl,EnvName,TRUE) THEN
  60.  IF fs.WriteString(fl,Operator) THEN END;
  61.  IF fs.Write(fl,mxA) THEN END;
  62.  IF fs.Write(fl,trA) THEN END;
  63.  IF fs.Write(fl,cIw) THEN END;
  64.  IF fs.Write(fl,cIh) THEN END;
  65.  IF fs.Write(fl,nIx) THEN END;
  66.  IF fs.Write(fl,nIy) THEN END;
  67.  IF fs.Close(fl) THEN END;
  68. END;
  69. END WritePrefs;
  70.  
  71. PROCEDURE CustomTab;
  72. VAR s1,s2,s3:st;
  73.     sl:ARRAY 50 OF ARRAY 5 OF CHAR;
  74.     n,m,k:INTEGER;li:LONGINT;
  75. BEGIN;
  76. s1:="";
  77. FOR n:=1 TO SHORT(nIx) DO
  78.  cv.IntToStringLeft(mxA[n],s2);
  79.  str.Append(s1,s2);
  80.  IF n<nIx THEN str.Append(s1,";");END;
  81. END;
  82. IF rq.GetString(s1,200,"Enter Mix table",NIL,u.done) THEN
  83.  m:=1;sl[m]:="";
  84.  FOR k:=0 TO SHORT(str.Length(s1)-1) DO
  85.   IF (ORD(s1[k])>47)AND(ORD(s1[k])<58) THEN
  86.    str.AppendChar(sl[m],s1[k]);
  87.   ELSE
  88.    INC(m);sl[m]:="";
  89.   END;
  90.  END;
  91.  FOR k:=1 TO m DO IF cv.StringToInt(sl[k],li) THEN mxA[k]:=SHORT(li);END;END;
  92. END;
  93. s1:="";
  94. FOR n:=1 TO SHORT(nIx) DO
  95.  cv.IntToStringLeft(trA[n],s2);
  96.  str.Append(s1,s2);
  97.  IF n<nIx THEN str.Append(s1,";");END;
  98. END;
  99. IF rq.GetString(s1,200,"Enter Treshold table",NIL,u.done) THEN
  100.  m:=1;sl[m]:="";
  101.  FOR k:=0 TO SHORT(str.Length(s1)-1) DO
  102.   IF (ORD(s1[k])>47)AND(ORD(s1[k])<58) THEN
  103.    str.AppendChar(sl[m],s1[k]);
  104.   ELSE
  105.    INC(m);sl[m]:="";
  106.   END;
  107.  END;
  108.  FOR k:=1 TO m DO IF cv.StringToInt(sl[k],li) THEN trA[k]:=SHORT(li);END;END;
  109. END;
  110. END CustomTab;
  111.  
  112. PROCEDURE InitDim;
  113. VAR on:st;
  114.     n,m:INTEGER;
  115. BEGIN;
  116. cIw:=800;
  117. cIh:=600;
  118. nIx:=5;
  119. nIy:=5;
  120. Cont:=TRUE;
  121. Operator:="$VER: Cat Builder 2.31";
  122. Operator:="Adpro:Convolutions/";
  123. ReadPrefs;
  124. px:=nIx;py:=nIy;
  125. io.WriteString("ADPro Catalog Builder by HDS\n\nOperator: ");
  126. IF ~fr.FileReq("Select Operator",Operator) THEN Cont:=FALSE;END;
  127. io.Write("\"");
  128. io.WriteString(Operator);io.WriteString("\"\n");
  129. IF Cont THEN Cont:=Cont AND rq.GetLong(nIx,"Mix Steps",NIL,rq.glMax,50,rq.glMin,2,u.done);
  130. IF Cont THEN Cont:=Cont AND rq.GetLong(nIy,"Treshold Steps",NIL,rq.glMax,50,rq.glMin,2,u.done);
  131. IF Cont THEN Cont:=Cont AND rq.GetLong(cIw,"CatPic Width",NIL,rq.glMax,1280,rq.glMin,320,u.done);
  132. IF Cont THEN Cont:=Cont AND rq.GetLong(cIh,"CatPic Height",NIL,rq.glMax,1024,rq.glMin,200,u.done);
  133. IF (~Prefs)OR(px#nIx)OR(py#nIy) THEN
  134.  FOR n:=1 TO SHORT(nIx) DO mxA[n]:=SHORT((100 DIV nIx)*n);END;
  135.  FOR n:=1 TO SHORT(nIy) DO trA[n]:=SHORT((255 DIV nIy)*n);END;
  136. END;
  137. IF Cont THEN IF rq.EZRequestTags("Customize table?","Yes|No",NIL,NIL,u.done)#0 THEN CustomTab;END;
  138. tIw:=SHORT(cIw DIV nIx);
  139. tIh:=SHORT(cIh DIV nIy);
  140. pNm:=SHORT(nIx * nIy);
  141. END;
  142. END;
  143. END;
  144. END;
  145. END;
  146. WritePrefs;
  147. END InitDim;
  148.  
  149. PROCEDURE InitRexx;
  150. BEGIN;
  151. IF fs.Open(fl,"T:rxfile.REXX",TRUE) THEN END;
  152. IF fs.WriteString(fl,"/* CatPic */") THEN END;
  153. IF fs.WriteString(fl,"ADDRESS \"ADPro\" ") THEN END;
  154. IF fs.WriteString(fl,"OPTIONS RESULTS") THEN END;
  155. END InitRexx;
  156.  
  157. PROCEDURE EndRexx;
  158. BEGIN;
  159. IF fs.Close(fl) THEN END;
  160. IF Dos.Execute("SYS:RexxC/rx T:rxfile",NIL,NIL) THEN END;
  161. END EndRexx;
  162.  
  163. PROCEDURE Comm(s:st);
  164. BEGIN;
  165. IF fs.WriteString(fl,s) THEN END;
  166. END Comm;
  167.  
  168. PROCEDURE InitImages;
  169. VAR s1,s2,s3:st;
  170. BEGIN;
  171. InitRexx;
  172. IF cv.IntToString(tIw-1,s2,5) THEN END;
  173. IF cv.IntToString(tIh-1,s3,5) THEN END;
  174. s1:="ABS_SCALE ";
  175. str.Append(s1,s2);str.Append(s1,s3);
  176. Comm(s1);
  177. Comm("SAVER \"TEMP\" \"XXX\" \"RAW\" ");
  178. EndRexx;
  179. END InitImages;
  180.  
  181. PROCEDURE InitCatPic;
  182. VAR s1,s2,s3:st;
  183. BEGIN;
  184. InitRexx;
  185. IF cv.IntToString(cIw,s2,6) THEN END;
  186. IF cv.IntToString(cIh,s3,6) THEN END;
  187. s1:="LOADER \"BACKDROP\" xxx COLOR ";
  188. str.Append(s1,s2);str.Append(s1,s3);
  189. str.Append(s1," 0 0 0 0 0 0 0 0 0 0 0 0");
  190. Comm(s1);
  191. EndRexx;
  192. END InitCatPic;
  193.  
  194. PROCEDURE MakeConPics;
  195. VAR s1,s2,s3,s4,s5:st;
  196.     n,m:INTEGER;
  197. BEGIN;
  198. InitRexx;
  199. FOR n:=1 TO SHORT(nIy) DO
  200.  Comm("LOADER \"TEMP\" \"XXX\" ");
  201.  s1:="OPERATOR CONVOLVE \" ";
  202.  IF cv.IntToString(trA[n],s5,4) THEN END;
  203.  str.Append(s1,Operator);str.Append(s1,"\" 100 ");
  204.  str.Append(s1,s5);
  205.  Comm(s1);
  206.  s2:="SAVER \"IFF\" \"T:cImage.";
  207.  cv.IntToStringLeft(n,s3);
  208.  str.Append(s2,s3);
  209.  str.Append(s2,"\" \"RAW\" ");
  210.  Comm(s2);
  211. END;
  212. EndRexx;
  213. END MakeConPics;
  214.  
  215. PROCEDURE PrepareCat;
  216. VAR s1,s2,s3,s4,s5:st;
  217.     n,m:INTEGER;
  218. BEGIN;
  219. InitCatPic;
  220. InitRexx;
  221. FOR n:=1 TO SHORT(nIy) DO
  222.  FOR m:=1 TO SHORT(nIx) DO
  223.  IF cv.IntToString((m-1)*tIw,s3,5) THEN END;
  224.  IF cv.IntToString((n-1)*tIh,s4,5) THEN END;
  225.  s1:="LOADER \"TEMP\" \"XXX\" ";
  226.  str.Append(s1,s3);
  227.  str.Append(s1,s4);
  228.  str.Append(s1," 100 ");
  229.  Comm(s1);
  230.  END;
  231. END;
  232. EndRexx;
  233. END PrepareCat;
  234.  
  235. PROCEDURE FillCat;
  236. VAR s1,s2,s3,s4,s5:st;
  237.     n,m:INTEGER;
  238. BEGIN;
  239. InitRexx;
  240. FOR n:=1 TO SHORT(nIy) DO
  241.  FOR m:=1 TO SHORT(nIx) DO
  242.  IF cv.IntToString((m-1)*tIw,s3,5) THEN END;
  243.  IF cv.IntToString((n-1)*tIh,s4,5) THEN END;
  244.  cv.IntToStringLeft((n),s2);
  245.  IF cv.IntToString(mxA[m],s5,5) THEN END;
  246.  s1:="LOADER \"IFF\" \"T:cImage.";
  247.  str.Append(s1,s2);
  248.  str.Append(s1,"\" ");
  249.  str.Append(s1,s3);
  250.  str.Append(s1,s4);
  251.  str.Append(s1,s5);
  252.  Comm(s1);
  253.  END;
  254. END;
  255. EndRexx;
  256. END FillCat;
  257.  
  258. BEGIN;
  259. InitDim;
  260. IF Cont THEN
  261. io.WriteString("Sizing...\n");
  262. InitImages;
  263. io.WriteString("Convolving ");io.WriteInt(nIy,2);io.WriteString(" times...\n");
  264. MakeConPics;
  265. io.WriteString("Preparing Catalog picture...\n");
  266. PrepareCat;
  267. io.WriteString("Loading ");io.WriteInt((nIy*nIx),3);
  268. io.WriteString(" convolution pictures...\n");
  269. FillCat;
  270. END;
  271. IF Dos.DeleteFile("T:SourceImage") THEN END;
  272. IF Dos.DeleteFile("T:rxFile.REXX") THEN END;
  273. IF Dos.Execute("Delete >NIL: T:cImage#?",NIL,NIL) THEN END;
  274. io.WriteString("Done...\n");
  275. END CatPic5.
  276.  
  277.  
  278.